package com.sourceQ.system.service.tenant;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sourceQ.system.domain.tenant.TenantPackage;
import com.sourceQ.system.dto.tenant.TenantPackagePageReqDTO;
import com.sourceQ.system.vo.tenant.TenantPackageRespVO;
import com.sourceQ.system.dto.tenant.TenantPackageSaveReqDTO;

import javax.validation.Valid;
import java.util.List;

/**
 * @author: SourceQ
 * @create: 2024-03-26 10:26
 * @Description:
 */
public interface TenantPackageService extends IService<TenantPackage> {

    /**
     * 创建租户套餐
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    int createTenantPackage(@Valid TenantPackageSaveReqDTO createReqVO);

    /**
     * 更新租户套餐
     *
     * @param updateReqVO 更新信息
     */
    void updateTenantPackage(@Valid TenantPackageSaveReqDTO updateReqVO);

    /**
     * 删除租户套餐
     *
     * @param ids 编号
     */
    void deleteTenantPackage(Long[] ids);

    /**
     * 获得租户套餐
     *
     * @param id 编号
     * @return 租户套餐
     */
    TenantPackageRespVO getTenantPackage(Long id);

    /**
     * 获得租户套餐分页
     *
     * @param pageReqVO 分页查询
     * @return 租户套餐分页
     */
    IPage<TenantPackage> getTenantPackagePage(Page page, TenantPackagePageReqDTO pageReqVO);

    /**
     * 校验租户套餐
     *
     * @param id 编号
     * @return 租户套餐
     */
    TenantPackage validTenantPackage(Long id);

    /**
     * 获得指定状态的租户套餐列表
     *
     * @param status 状态
     * @return 租户套餐
     */
    List<TenantPackage> getTenantPackageListByStatus(String status);

    /**
     * 获取指定套餐集合
     * @param dto
     * @return
     */
    List<TenantPackageRespVO> getTenantPackageVoList( TenantPackagePageReqDTO dto);

    /**
     * 修改套餐状态
     * @param id
     * @param status
     */
    void changeTenantPackage(Long id,String status);
}
